// axios的配置文件
import axios from 'axios'
import { Message } from "element-ui"
import router from "@/router"
// 声明前缀
let baseURL = ''
// 判断环境，判断服务器，修改前缀
if(process.env.NODE_ENV === 'development') {
  // development  开发环境
  baseURL = '/api'
}else if(process.env.NODE_ENV === 'production') {
  // production 生产环境
  baseURL = ''
}


// 创建自己的axiox实例
let Axios = axios.create({
  // 共用的前缀
  baseURL: baseURL,
  // 超时时间（ms）
  timeout: 1000
})

// 请求拦截器
let myInterceptor = Axios.interceptors.request.use(config => {
  let userInfo = JSON.parse(localStorage.getItem('userInfo')) || {}
  if(config.url != '/userlogin') {
    // 除了登录以外，都需要token
    if(userInfo.token) {
      // config.headers.authorization = '-2085346'
      config.headers.authorization = userInfo.token
    }
  }
  return config
}, err => {
  console.log(err);
  return Promise.reject(err);
})

// 响应拦截器
Axios.interceptors.response.use(data => {
  if(data.data.code === 200) {
    return data.data
  }else {
    // 提示错误
    Message.error(data.data.msg);
    // 403是未授权，需要重新登录。其他错误不用
    if(data.data.code === 403) {
      router.push("/login")
    }
    return data.data
  }
}, err=> {
  // 对响应错误做点什么
  return Promise.reject(err);
})

// 移除拦截器
// Axios.interceptors.request.eject(myInterceptor);

// 封装get和post

// get 需要的参数：url、params
export function get (url, params) {
  return new Promise((resolve, reject) => {
    Axios.get(url, {
      params: params
    })
    .then(res => {
      resolve(res)
    })
    .catch(err => {
      reject(err)
    })
  })
}

// post 需要的参数：url、data
export function post(url, data) {
  return new Promise((resolve, reject) => {
    Axios.post(url, data)
      .then(res => {
        resolve(res)
      })
      .catch(res => {
        reject(res)
      })
  })
}

// 将改好的Axios实例暴露出去
export default Axios